package string;

/**
 * 给你一个字符串 s 和一个 长度相同 的整数数组 indices 。
 * 请你重新排列字符串 s ，其中第 i 个字符需要移动到 indices[i] 指示的位置。
 * 返回重新排列后的字符串。
 * <p>
 * 示例 1：
 * 输入：s = "codeleet", indices = [4,5,6,7,0,2,1,3]
 * 输出："leetcode"
 * 解释：如图所示，"codeleet" 重新排列后变为 "leetcode" 。
 * <p>
 * 示例 2：
 * 输入：s = "abc", indices = [0,1,2]
 * 输出："abc"
 * 解释：重新排列后，每个字符都还留在原来的位置上。
 *
 * @author Jisheng Huang
 * @version 20250424
 */
public class ShuffleString_1528 {
    /**
     * Restore the string from the given shuffled string and the original position
     *
     * @param s       the given string
     * @param indices the original position
     * @return the restored string
     */
    public static String restoreString(String s, int[] indices) {
        int len = s.length();
        char[] res = new char[len];

        for (int i = 0; i < len; ++i) {
            res[indices[i]] = s.charAt(i);
        }

        return new String(res);
    }

    public static void main(String[] args) {
        String s = "codeleet";
        int[] indices = {4, 5, 6, 7, 0, 2, 1, 3};

        System.out.println(restoreString(s, indices));

        s = "abc";
        indices = new int[]{0, 1, 2};

        System.out.println(restoreString(s, indices));
    }
}
